Liste de liste de liste de liste în PYTHON
adică matrice tridimensionale

Lista de liste de liste
Este de fapt vectorul de matrice, adică matricea tridimensională. Ne imaginăm o structură arbprescentă.
Pe primul nivel, cel al rădăcinei se află vectorul de matrice.
Pe nivelul următor se află elementele vectoruluii, care sunt de fapt nişte matrice.
Pe nivelul următor se aflăliniile fiecărei matrice.
Pe nivelul următor se află elementele de pe fiecare linie.
Ce frumos!
Dacă se defineşte A = ….
A[i] este componenta vectorului, care de fapt este o matrice.
A[i][j] este linia din matricea A[i]
A[i][j][k] este elementul k de pe linia A[i][j] din matricea A[i], coponenta de pe poziţia i a vectorului de matrice A.
Ce simplu!
Programul de mai jos calculează:
- sumele tuturor elementelor vectorului,
- sumele fiecărui element din vector, adică suma elementelor fiecărei matrice,
- sumele liniilor din toate matricele.
#
# Liste de liste de liste sau
# matrice tridimensionala
#
Lista_de_lista_de_lista = [[[1,2,3,10],
                            [4,5,6,20],
                            [7,8,9,30]],
                           [[10,11,12,1],
                            [13,14,15,2],
                            [16,17,18,3]],
                           [[19,20,21,4],
                            [22,23,24,5],
                            [25,26,27,6]],
                           [[-19,-20,-21,-4],
              ;             [-22,-23,-24,-5],
                            [-25,-26,-27,-6]],
                           [[-10,-11,-12,-1],
                            [-13,-14,-15,-2],
                            [-16,-17,-18,-3]]]
Nr_lista_de_lista_de_lista = len(Lista_de_lista_de_lista)
Nr_lista_de_lista = len(Lista_de_lista_de_lista[0])
Nr_lista = len(Lista_de_lista_de_lista[0][0])
print('Numar de liste de liste (matrice in lista) =', Nr_lista_de_lista_de_lista) print('Numar de liste in lista (linii in matrice) =', Nr_lista_de_lista)
print('Numar de elemente in lista (coloabe in matrice) =', Nr_lista)
#
# calcul suma elemente din lista de liste de leiste
# (calculul sumei elementelor din toate matricele)
#
Suma_totala = 0
for i in range(Nr_lista_de_lista_de_lista):
   for j in range(Nr_lista_de_lista):
      for k in range(Nr_lista):
         Suma_totala += Lista_de_lista_de_lista[i][j][k]
print('Suma elementelor din lista de lista de lista =', Suma_totala)
Suma_matrice = [ 0 ] * Nr_lista_de_lista_de_lista
for i in range(Nr_lista_de_lista_de_lista):
   Suma_matrice[i]
   for j in range(Nr_lista_de_lista):
      for k in range(Nr_lista):
         Suma_matrice[i] += Lista_de_lista_de_lista[i][j][k]
    print('Suma elementelor din matricea', i, ' =', Suma_matrice[i])
#
# calcul sume de pe liniile matricelor din lista de matrice
#
for i in range(Nr_lista_de_lista_de_lista):
   for j in range(Nr_lista_de_lista):
       Suma_linie_ij = 0
      for k in range(Nr_lista):
         Suma_linie_ij += Lista_de_lista_de_lista[i][j][k]
      print('Suma elementelor din atricea', i, ' si linia',j, ' =', Suma_linie_ij)



Rezultatele afişate obţinute prin efectuarea prelucrărilor sunt:


Numar de liste de liste (matrice in lista) = 5
Numar de liste in lista (linii in matrice) = 3
Numar de elemente in lista (coloabe in matrice) = 4
Suma elementelor din lista de lista de lista = 105
Suma elementelor din matricea 0 = 105
Suma elementelor din matricea 1 = 132
Suma elementelor din matricea 2 = 222
Suma elementelor din matricea 3 = -222
Suma elementelor din matricea 4 = -132
Suma elementelor din atricea 0 si linia 0 = 16
Suma elementelor din atricea 0 si linia 1 = 35
Suma elementelor din atricea 0 si linia 2 = 54
Suma elementelor din atricea 1 si linia 0 = 34
Suma elementelor din atricea 1 si linia 1 = 44
Suma elementelor din atricea 1 si linia 2 = 54
Suma elementelor din atricea 2 si linia 0 = 64
Suma elementelor din atricea 2 si linia 1 = 74
Suma elementelor din atricea 2 si linia 2 = 84
Suma elementelor din atricea 3 si linia 0 = -64
Suma elementelor din atricea 3 si linia 1 = -74
Suma elementelor din atricea 3 si linia 2 = -84
Suma elementelor din atricea 4 si linia 0 = -34
Suma elementelor din atricea 4 si linia 1 = -44
Suma elementelor din atricea 4 si linia 2 = -54


Ar fi fost crocant dacă limbajul PYTHON ar fi permis şi agregări de seturi de seturi şi dicţionare de dicţionare să vedem nişte rezultate spectaculoase. N-a fost să fie, dar nu-mi pierd optimismul, căci va apare un alt limbaj cu mult mai general care să permită şi aşa ceva sau probabil, chiar în viitor PYTHON se va dezvolta şi mai mult.
Cu facilităţile de a defini liste de liste de liste cu componente variabile pe toate nivelurile, vor găsi soluţie extrem de elegantă problemele de analiză dispersională cu număr oarecare de experimente în căsuţă. Recomand cartea lui Ioan VĂDUVA, profesorul de la Universitatea Bucureşti, care a scris cartea intitulată Analiza dispersională, prublicată în Editura Tehnică, Bucureşti în anul 1970 şi care are 262 pagini.



(afişat azi 17 aprilie 2022 ora 18,20)
revenire